Para usuarios de Windows y Mac OS: entorno de desarrollo con Docker y Visual Studio Code
Este documento es un manual breve destinado a los usuarios de los sistemas operativos Windows y Mac OS, que describe cómo configurar el entorno de desarrollo utilizando Visual Studio Code, Docker y la extensión Dev-Containers. Los usuarios de GNU/Linux no necesitan usar contenedores para desarrollar código C en esta asignatura.
Para comenzar, necesitamos instalar Docker Desktop en nuestro sistema:
Nota para usuarios de MS Windows: Al iniciar Docker Desktop, es posible que se muestren avisos importantes. Para solucionarlos:
wsl --install wsl --update
A continuación, se muestra una captura de pantalla de Docker instalándose:
Y otra captura con Docker en funcionamiento:
Continuamos instalando Visual Studio Code:
Para que VSCode funcione contra un contenedor debemos tener una carpeta de proyecto con la siguiente estructura:
PARProject
.devcontainer
Dockerfile
devcontainer.json
proyecto
La estructura de directorio mencionada anteriormente, junto con los archivos Dockerfile y devcontainer.json, se proporcionan en el archivo comprimido entorno-vscode-docker.zip.
Si abrimos un proyecto con una carpeta .devcontainer y el complemento Dev Containers está instalado (viene con Remote Development), pueden ocurrir varias situaciones:
Dev Containers
Remote Development
La recomendación, si trabajamos en un entorno mixto (desarrollando en Windows/Mac y Linux por ejemplo), es no copiar la carpeta .devcontainer al pasar los archivos de Windows/Mac OS a GNU/Linux.
Una vez que tengamos la estructura completa de la carpeta de trabajo proyecto, junto con su carpeta .devcontainer, procedemos de la siguiente manera:
/workspaces/parssdd
A continuación, se muestra una captura de pantalla de Visual Studio Code creando el contenedor (como nombre del proyecto debería mostrarse PARProject):
Ahora que estamos configurados y conectados al contenedor, podemos comenzar a desarrollar, compilar y ejecutar nuestros programas:
En el directorio de trabajo, crearemos un fichero llamado hello.c, y almacenaremos en él un programa simple en C de prueba:
hello.c
#include <stdio.h> int main(void){ printf("Hello World!\n"); return 0; }
Para compilar y ejecutar el programa, abrimos una nueva terminal en Visual Studio Code haciendo clic en Terminal y luego en New Terminal.
Terminal
New Terminal
Introducimos las siguientes órdenes en la terminal:
gcc -g -Wall -o hello hello.c ./hello
Hello World!
A continuación, se muestra una captura de pantalla de Visual Studio Code ejecutando el programa hello desde la terminal (en nuestro caso el directorio actual será /workspaces/parssdd):
hello
La documentación completa para cada sistema operativo se puede encontrar en las siguientes fuentes:
En algunas ocasiones, puede resultar más práctico trabajar exclusivamente dentro del contenedor. Para hacerlo, se proporcionan a continuación algunos comandos que pueden ser de utilidad. Para ejecutar estos comandos, es necesario contar con privilegios de administrador. En sistemas GNU/Linux, esto implica agregar sudo al principio de cada comando o asegurarse de que el usuario pertenezca al grupo docker:
sudo usermod -aG docker $USER
A continuación, se presentan los comandos más comunes:
docker build -t nombre_de_la_imagen - < Dockerfile
docker run [--name nombre_del_contenedor] -it nombre_de_la_imagen
docker run -v /ruta/del/host:/ruta/en/el/contenedor [--name nombre_del_contenedor] -it nombre_de_la_imagen
docker start -ai nombre_del_contenedor
docker ps -a
docker images -a
docker rm nombre_del_contenedor
docker rmi nombre_de_la_imagen
docker cp ruta_del_archivo_local nombre_del_contenedor:ruta_del_archivo_en_el_contenedor